home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / GCC 1.37.1r14 / usr / gcc-1.37.1r14 / object oriented files / CDRVRBrowser.cp < prev    next >
Encoding:
Text File  |  1993-11-09  |  2.8 KB  |  120 lines  |  [TEXT/KAHL]

  1. /******************************************************************************
  2.  CDRVRBrowser.c
  3.  
  4.         This is a subclass of CResBrowser that creates a TCL dialog
  5.         when the user double-clicks on a DRVR resource.
  6.         
  7.     SUPERCLASS = CResBrowser
  8.     
  9.     Copyright © 1991 Symantec Corporation. All rights reserved.
  10.     
  11.  
  12.  ******************************************************************************/
  13.  
  14. #include <Global.h>
  15. #include <CApplication.h>
  16. #include <CDesktop.h>
  17. #include <CDecorator.h>
  18. #include "CResListPane.h"
  19. #include "CDRVRBrowser.h"
  20. #include "CDRVRDirector.h"
  21.  
  22. extern CDesktop *gDesktop;
  23. extern CApplication *gApplication;
  24. extern CDecorator    *gDecorator;
  25.  
  26. /******************************************************************************
  27.  IDRVRBrowser
  28.  
  29.      Initialize the CDRVRBrowser. No special initialization is needed, so 
  30.      we just call the superclass's initialization method.
  31.      
  32. ******************************************************************************/
  33.  
  34. void CDRVRBrowser::IDRVRBrowser( CBrowseResDoc *aSupervisor, CArray *aResList)
  35. {
  36.     CResBrowser::IResBrowser( aSupervisor, 'DRVR', aResList);
  37. }
  38.  
  39. /******************************************************************************
  40.  MakeResourceWindow
  41.  
  42.      Make resource window is called to make a window for an individual resource.
  43.      We know the resource type is 'DRVR', so we make a TCL dialog window.
  44. ******************************************************************************/
  45.  
  46. CDirector *CDRVRBrowser::MakeResourceWindow( tResourceInfo *aResource)
  47. {
  48.     CDRVRDirector    *dialog = NULL;
  49.     short            savedRes = CurResFile();
  50.     
  51.     TRY
  52.     {
  53.         dialog = new( CDRVRDirector);
  54.         
  55.         UseResFile( HomeResFile( aResource->resource));
  56.         dialog->IDRVRDirector( aResource->ID, this);
  57.         
  58.         dialog->BeginDialog();        
  59.     }
  60.     CATCH
  61.     {
  62.         UseResFile( savedRes);
  63.         ForgetObject( dialog);
  64.     }
  65.     ENDTRY;
  66.     
  67.     UseResFile( savedRes);
  68.  
  69.     return dialog;
  70. }
  71.  
  72. void CDRVRBrowser::BuildWindow( void)
  73. {
  74.     inherited::BuildWindow();
  75.     
  76.     itsResPane->SetSelectionFlags( 0 );
  77. }
  78.  
  79. #define        cmdOpenResource        1051    // open window on a resource
  80.  
  81. Boolean CDRVRBrowser::GetSelect(Boolean mode, Cell *selected, tResourceInfo *info)
  82.     {
  83.     Boolean res = itsResPane->GetSelect(mode, selected);
  84.     if (res)
  85.         itsResList->GetItem( info, ++(selected->v));
  86.     return res;
  87.     }
  88.  
  89. void CDRVRBrowser::DoCommand( long aCommand)
  90. {
  91.     tResourceInfo    resInfo;
  92.     Cell            selectedCell;
  93.     
  94.     switch( aCommand)
  95.     {
  96.         case cmdOpenResource:
  97.         
  98.                 // determine the selected cells
  99.                 
  100.             selectedCell.h = selectedCell.v = 0;
  101.             while (GetSelect( kCurrentOrNext, &selectedCell, &resInfo))
  102.             {
  103.                 if (resInfo.window)
  104.                     resInfo.window->GetWindow()->Select();
  105.                 else
  106.                 {
  107.                     
  108.                     resInfo.window = MakeResourceWindow( &resInfo);
  109.                     gDecorator->StaggerWindow( resInfo.window->GetWindow() );
  110.                     itsResList->SetItem( &resInfo, selectedCell.v);
  111.                 }
  112.             }
  113.             break;
  114.             
  115.         default:
  116.             inherited::DoCommand( aCommand);
  117.             break;
  118.     }
  119. }
  120.